unit PesquisaBaixaCR;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFormPesquisa, DB, DBTables, StdCtrls, Grids, DBGrids, Buttons,
  ExtCtrls, CheckLst, Mask, ToolEdit, DBCtrls;

type
  TFPesquisaBaixaCR = class(TFormPesquisa)
    CkBTodasEmpresas: TCheckBox;
    CLBEmpresas: TCheckListBox;
    Label10: TLabel;
    Label2: TLabel;
    DBLCBCliente: TDBLookupComboBox;
    Label9: TLabel;
    DEDataBaixaIni: TDateEdit;
    Label6: TLabel;
    DEDataBaixaFim: TDateEdit;
    DSCliente: TDataSource;
    DBLCBConta: TDBLookupComboBox;
    Label1: TLabel;
    DSConta: TDataSource;
    EDocumento: TEdit;
    ECheque: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    cbxTipoBusca: TComboBox;
    Label20: TLabel;
    edGrupoCliente: TEdit;
    procedure BtnConsultarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CkBTodasEmpresasClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BtnLimparClick(Sender: TObject);
    procedure BtnImprimirClick(Sender: TObject);
    procedure DBLCBClienteKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure cbxTipoBuscaChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FPesquisaBaixaCR: TFPesquisaBaixaCR;
  s: String;
  tipoBusca : string = ' = ';
  complementoIni: string = '';
  complementoFin: string = '';
implementation

uses UDmFinanceiro, UGeral, UDmGestao, RelatorioBaixaCR, UPesquisaRapida;

{$R *.dfm}

procedure TFPesquisaBaixaCR.BtnConsultarClick(Sender: TObject);
begin
  if (EmpresasDesmarcadas(CLBEmpresas) = CLBEmpresas.Items.Count) then
   CkBTodasEmpresasClick(Sender);
  S:=Concatenaempresas(CLBEmpresas);

  QPesquisa.Close;
  QPesquisa.SQL.Clear;
  {QPesquisa.SQL.Add(' Select CR_Codigo As Titulo,CR_Documento as Documento,Cli_Razao as Cliente, LANC_HISTORICO1 as Historico1,LANC_HISTORICO2 as Historico2,CR_Valor as Valortitulo, CR_DataVencimento as DataVencimento, Lanc_Data as DataBaixa, ');
  QPesquisa.SQL.Add(' Lanc_Cheque as Cheque,Lanc_Valor as ValorBaixa,lanc_JurosMulta as JurosMulta,Cont_Corr_Descricao as Conta ');
  QPesquisa.SQL.Add(' from ContaCorrente  Right Join ( Lancamento  Inner join (ContasReceber Left join Cliente on CR_Cliente = Cli_Codigo) on Lanc_Titulo = CR_Codigo )on Cont_Corr_Codigo = Lanc_Conta ');
  QPesquisa.SQL.Add(' Where (Lanc_CPCR = "R") ');
  QPesquisa.SQL.Add(' And (Codigoempresa in ( ' + s + ') )');}
  QPesquisa.SQL.Add('SELECT');
  QPesquisa.SQL.Add('	CR_CODIGO AS TITULO,');
  QPesquisa.SQL.Add('	CR_DOCUMENTO AS DOCUMENTO,');
  QPesquisa.SQL.Add('	CR_HISTORICO1,');
  QPesquisa.SQL.Add('	CR_HISTORICO2,');
  QPesquisa.SQL.Add('	CLI_RAZAO AS CLIENTE,');
  QPesquisa.SQL.Add('	CR_SALDO AS SALDO,');
  QPesquisa.SQL.Add('	LANC_CODIGO AS LANCTO,');
  QPesquisa.SQL.Add('	LANC_HISTORICO1 AS HISTORICO1,');
  QPesquisa.SQL.Add('	LANC_HISTORICO2 AS HISTORICO2,');
  QPesquisa.SQL.Add('	CR_VALOR AS VALORTITULO,');
  QPesquisa.SQL.Add('	CR_DATAVENCIMENTO AS DATAVENCIMENTO,');
  QPesquisa.SQL.Add('	LANC_DATA AS DATABAIXA,');
  QPesquisa.SQL.Add('	LANC_CHEQUE AS CHEQUE,');
  QPesquisa.SQL.Add('	LANC_VALOR AS VALORBAIXA,');
  QPesquisa.SQL.Add('	LANC_JUROSMULTA AS JUROSMULTA,');
  QPesquisa.SQL.Add('	PLANOCONTAS.DESCRICAO AS CLASSIFICACAO,');
  QPesquisa.SQL.Add('	CONT_CORR_DESCRICAO AS CONTA');
  QPesquisa.SQL.Add('FROM');
  QPesquisa.SQL.Add('	CONTACORRENTE');
  QPesquisa.SQL.Add('	RIGHT JOIN ( LANCAMENTO');
  QPesquisa.SQL.Add('		     INNER JOIN (CONTASRECEBER LEFT JOIN CLIENTE ON CR_CLIENTE = CLI_CODIGO) ON');
  QPesquisa.SQL.Add('				LANC_TITULO = CR_CODIGO )ON CONT_CORR_CODIGO = LANC_CONTA');
  QPesquisa.SQL.Add('	         INNER JOIN PLANOCONTAS ON(CONTASRECEBER.CR_PLANO = PLANOCONTAS.CODIGO)');
  QPesquisa.SQL.Add('WHERE');
  QPesquisa.SQL.Add('	(CONTASRECEBER.EXCLUIDO <> ''S'' OR CONTASRECEBER.EXCLUIDO IS NULL) AND');
  QPesquisa.SQL.Add('	(LANCAMENTO.EXCLUIDO    <> ''S'' OR LANCAMENTO.EXCLUIDO    IS NULL) AND');
  QPesquisa.SQL.Add('	(LANC_CPCR = "R")AND');
  QPesquisa.SQL.Add('	(LANC_TITULO > 0)AND');
  QPesquisa.SQL.Add('	(CONTASRECEBER.CODIGOEMPRESA IN ( ' + S + ') )');


 if DBLCBCliente.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (CR_Cliente = :Cli)');
   QPesquisa.ParamByName('Cli').AsInteger:= DBLCBCliente.KeyValue;
  end;

 if DBLCBConta.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (Lanc_Conta = :Conta)');
   QPesquisa.ParamByName('Conta').AsInteger:= DBLCBConta.KeyValue;
  end;

  if EDocumento.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (CR_Documento '+ tipoBusca +' :Doc)');
   QPesquisa.ParamByName('Doc').AsString:= complementoIni + EDocumento.Text + complementoFin;
  end;

  if ECheque.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (Lanc_Cheque = :Cheque)');
   QPesquisa.ParamByName('Cheque').AsString:= ECheque.Text;
  end;

  if (DEDataBaixaIni.Date <> 0) and (DEDataBaixaFim.Date <> 0) then
  begin
   QPesquisa.SQL.Add(' and (Lanc_Data  between :DataI and :DataF ) ');
   QPesquisa.ParamByName('DataI').AsDate:=DEDataBaixaIni.Date;
   QPesquisa.ParamByName('DataF').AsDate:=DEDataBaixaFim.Date;
  end;

  if edGrupoCliente.Text <> '' then
  begin
    QPesquisa.SQL.Add(montaFiltroSql('CLI_GRUPO',edGrupoCliente.Text));
  end;

  // QPesquisa.SQL.Add(' Group by Cont_Corr_Descricao,Lanc_Data,CR_Codigo,Cli_Razao,CR_Documento,LANC_HISTORICO1, LANC_HISTORICO2,CR_Valor,CR_DataVencimento, Lanc_Cheque ,Lanc_Valor,lanc_JurosMulta ');

 QPesquisa.SQL.Add('GROUP BY');
 QPesquisa.SQL.Add('	CLI_RAZAO,');
 QPesquisa.SQL.Add('	CR_CODIGO,');
 QPesquisa.SQL.Add('	LANC_CODIGO,');
 QPesquisa.SQL.Add('	CONT_CORR_DESCRICAO,');
 QPesquisa.SQL.Add('	LANC_DATA,');
 QPesquisa.SQL.Add('	CR_HISTORICO1,');
 QPesquisa.SQL.Add('	CR_HISTORICO2,');
 QPesquisa.SQL.Add('	CR_SALDO,');
 QPesquisa.SQL.Add('	CR_DOCUMENTO,');
 QPesquisa.SQL.Add('	LANC_HISTORICO1,');
 QPesquisa.SQL.Add('	LANC_HISTORICO2,');
 QPesquisa.SQL.Add('	CR_VALOR,');
 QPesquisa.SQL.Add('	CR_DATAVENCIMENTO,');
 QPesquisa.SQL.Add('	LANC_CHEQUE,');
 QPesquisa.SQL.Add('	LANC_VALOR,');
 QPesquisa.SQL.Add('	PLANOCONTAS.DESCRICAO,');
 QPesquisa.SQL.Add('	LANC_JUROSMULTA');
 QPesquisa.Open;
 inherited;
end;

procedure TFPesquisaBaixaCR.FormCreate(Sender: TObject);
begin
  inherited;
 QPesquisa.Close;
 QPesquisa.SQL.Clear;
 QPesquisa.SQL.Add('Select Emp_Codigo,Emp_Fantasia from empresa');
 QPesquisa.Open;
 QPesquisa.First;
 CLBEmpresas.Items.Clear;
 while not(QPesquisa.Eof) do
 begin
  CLBEmpresas.Items.Add(QPesquisa.fieldByname('Emp_Codigo').AsString + '-' + QPesquisa.fieldByname('Emp_Fantasia').AsString );
  QPesquisa.Next;
 end;
 CkBTodasEmpresasClick(Sender);
 QPesquisa.Close;
end;

procedure TFPesquisaBaixaCR.CkBTodasEmpresasClick(Sender: TObject);
Var
 i : Integer;
begin
  inherited;
 for i := 0 to CLBEmpresas.Items.Count - 1 do
  begin
   if StrToInt(Copy(CLBEmpresas.Items.Strings[i],1,pos('-',CLBEmpresas.Items.Strings[i])- 1)) = Codigoempresa then
    CLBEmpresas.Checked[i]:=true
   else
    CLBEmpresas.Checked[i]:=CkBTodasEmpresas.Checked;
  end;

end;

procedure TFPesquisaBaixaCR.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 FPesquisaBaixaCR:=nil;
  inherited;
end;

procedure TFPesquisaBaixaCR.BtnLimparClick(Sender: TObject);
begin
  inherited;
 DEDataBaixaIni.Date:=0;
 DEDataBaixaFim.date:=0;
 DBLCBCliente.KeyValue:=null;
 DBLCBConta.KeyValue:=null;
end;

procedure TFPesquisaBaixaCR.BtnImprimirClick(Sender: TObject);
begin
 inherited;
 DSPesquisa.Enabled:=false;
 Application.CreateForm(TFRelatorioBaixaCR, FRelatorioBaixaCR);
 with FRelatorioBaixaCR do
  begin
   QRLNomeRelatorio.Caption:='BAIXA CONTAS A RECEBER';
   QRLData.Caption:=DEDataBaixaIni.Text + ' a ' + DEDataBaixaFim.Text;
   QuickRep1.DataSet:=QPesquisa;
   QuickRep1.Prepare;
   QuickRep1.Preview;
   close;
  end; // With
 DSPesquisa.Enabled:=true;  
end;

procedure TFPesquisaBaixaCR.DBLCBClienteKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  case key of
   116 : begin //F5
           TDBLookupComboBox(Sender).ListSource.DataSet.Close;
           TDBLookupComboBox(Sender).ListSource.DataSet.Open;
          end ;
   46   : TDBLookupComboBox(Sender).KeyValue:=null;
  end;

  IF KEY = VK_F8 THEN
  BEGIN

    Application.CreateForm(TFPesquisaRapida,FPesquisaRapida);

    FPesquisaRapida.tipo := 'CLIENTE';
    CaPtUrA_pEsQuIsA_rApIdA := '';

    FPesquisaRapida.ShowModal;

    if CaPtUrA_pEsQuIsA_rApIdA <> '' then
      TDBLookupComboBox(sender).KeyValue := CaPtUrA_pEsQuIsA_rApIdA;

    CaPtUrA_pEsQuIsA_rApIdA := '';

    Exit;

  END;

end;

procedure TFPesquisaBaixaCR.cbxTipoBuscaChange(Sender: TObject);
begin
  inherited;
  case cbxTipoBusca.ItemIndex of
    0:begin //igual
        tipoBusca := ' = ';
        complementoini := '';
        complementoFin := '';
      end;
    1:begin //contendo
        tipoBusca := ' like ';
        complementoini := '%';
        complementoFin := '%';
      end;
    2:begin // iniciado
        tipoBusca := ' like ';
        complementoini := '';
        complementoFin := '%';
      end;
    3:begin // iniciado
        tipoBusca := ' like ';
        complementoini := '%';
        complementoFin := '';
      end;
  end;

end;

end.
